<?php

class Student extends CI_Controller {

	// 构造方法
	public function __construct() {
		// 继承父类构造方法
		parent::__construct();
		// 自动加载模型
		$this->load->model('repo_model', 'repo');
	}

	// 默认方法
	public function index($value = '') {
		// p('这是我的默认控制器');
		//加载默认视图
		$this->load->view('reg.php');
	}

// 显示所有作业信息

	public function viewAll() {
		// $this->load->model('repo_model', 'repo');
		// 先通过模型获得所有作业的数据
		$data['info'] = $this->repo->getAll();

		// 把数据传递到视图进行显示
		$this->load->view('display.php', $data);
	}

	// 表单验证
	public function process() {
		// 加载表单验证辅助函数
		$this->load->helper(array('form'));
		// 加载表单验证类
		$this->load->library('form_validation');

		// 设置验证规则
		$config = array(
			array(
				'field'  => 'username',
				'label'  => '学生姓名',
				'rules'  => 'regex_match[/^[\x80-\xff]{6,}$/]',
				'errors' => array(
					'regex_match' => '姓名必须是两个以上的汉字',
				),
			),
			array(
				'field'  => 'usernumber',
				'label'  => '学生学号',
				'rules'  => 'regex_match[/^[pP]1[4-6]\d{7}/]',
				'errors' => array(
					'regex_match' => '学号必须是以p开头的9位数字',
				),
			),
			array(
				'field'  => 'userurl',
				'label'  => '仓库地址',
				'rules'  => 'regex_match[/^https:\/\/(gitee.com|git.coding.net)\/(.*?)\/(.*)/]|is_unique[taskinfo.stuurl]',
				'errors' => array(
					'regex_match' => '仓库地址必须是https开头，存放在gitee.com或者git.coding.net网站的有效地址',
					'is_unique'   => '仓库地址已经存在！',
				),
			),
		);

		$this->form_validation->set_rules($config);

		if ($this->form_validation->run() == FALSE) {
			// p($this->form_validation->run());
			$this->load->view('reg.php');
		} else {
			//
			// $this->load->model('repo_model', 'repo');
			$this->repo->updateStuInfo();
			// 显示用户信息
			$this->viewAll();
		}
	}

// 用户信息验证回调函数
	public function username_check($str) {

		$pattern = '/^[\x80-\xff]{6,}$/';

		if (!preg_match($pattern, $str)) {
			$this->form_validation->set_message('username_check', '用户名称必须是两个汉字以上');
			return FALSE;
		} else {
			return TRUE;
		}
	}

	// 学号信息验证回调函数
	public function usernumber_check($str) {

		$pattern = '/^[pP]1[56]\d{7}/';

		if (!preg_match($pattern, $str)) {
			$this->form_validation->set_message('usernumber_check', '学号以p开头，后接数字，共10位');
			return FALSE;
		} else {
			return TRUE;
		}
	}

	// 仓库地址信息验证回调函数
	public function userurl_check($str) {

		$pattern = '/^https:\/\/((gitee.com)|(coding.net)|(github.com))\/(.*?)\/(.*?)/';

		if (!preg_match($pattern, $str)) {
			$this->form_validation->set_message('userurl_check', '仓库地址必须是https开头的有效地址');
			return FALSE;
		} else {
			return TRUE;
		}
	}
}
